package com.hu;

import java.util.Arrays;
import java.util.function.IntBinaryOperator;
import java.util.function.IntConsumer;
import java.util.function.IntPredicate;
import java.util.stream.IntStream;

/**
 * @author 00355760
 * @功能：
 * @版本： V1
 * @版权： 信息技术有限公司（http://www.mychery.com/）
 * @作者： 磐石战队开发组  00355760
 * @日期： 2024/9/12 15:40
 */
public class Lambda01 {
    // public static void main(String[] args) {
    //     new Thread(new Runnable() {
    //         @Override
    //         public void run() {
    //             System.out.println("hello world");
    //         }
    //     }).start();
    // }
    // lambda表达式不关注类和方法名，只关注方法形参和方法体，即参数和操作，但是只有函数式接口可以这样使用
    // 或者里面只有一个抽象方法需要被重写
    public static void main(String[] args) {
        // new Thread(()->{System.out.println("hello world");}).start();

        int i = add((int left, int right)-> {
            return left + right;
        });
        System.out.println(i);
        
        test02();
    }

    private static void test02() {
        int[] arr = {1,2,3,4,5};
        IntStream stream = Arrays.stream(arr);
        stream.distinct()
                .filter(value -> value>2).sorted().
                forEach(System.out::println);
    }

    public static int add(IntBinaryOperator operator){
        int a = 10;
        int b = 20;
        return operator.applyAsInt(a,b);
    }
}
